package com.uzai.common.dto.chat;

import java.io.Serializable;

/**
 * @Auther: jianghan
 * @Date: 2022/1/2 14:46
 * @Description:
 */
public class ImChatDto implements Serializable {
    private static final long serialVersionUID = -4872311324228780351L;
    /**
     * 请求id
     */
    private String reqId;
    /**
     * 消息内容
     */
    private MsgDto msg;
    /**
     * 消息来源类型 0表示普通聊天消息，1表示需要应答的成对消息，2表示服务器主动发出的消息（如订单消息）
      */
    private int msgSourceType;
    /**
     * 消息对应的业务类型
     */
    private String bizType;
    private int retry;
    private Long msgId;

    /**
     * 兼容网页版和pc版本专用
     */
    private int ignoreBizType;

    public static class MsgDto implements Serializable {
        private static final long serialVersionUID = -3682657147515716806L;

        /**
         * 运营商id
         */
        private Long merId;

        /**
         * 消息内容
         */
        private MsgContentDto msgContent;

        /**
         * 扩展信息-保留字段
         */
        private String ext;

        /**
         * 发送时间
         */
        private int sendTime;

        /**
         * 发送时间精确到毫秒
         */
        private long sendTimeV2;
        /**
         * 客服id
         */
        private Long csId;
        /**
         * 客服账号
         */
        private String csAccount;
        /**
         * 客服名称
         */
        private String csName;

        /**
         * 用户id
         */
        private Long userId;
        /**
         * 用户终端id
         */
        private String bizUserId;
        /**
         * 用户昵称
         */
        private String userName;

        /**
         * 用户头像
         */
        private String userAvatar;

        /**
         * 设备类型
         */
        private Integer deviceType;
        /**
         * 设备终端id
         */
        private String deviceId;
        /**
         * 设备id
         */
        private Long deviceUniqueId;
        /**
         * 设备名称
         */
        private String deviceName;

        /**
         * 消息来源(0用户消息；1机器人回复； 2客服系统回复)
         */
        private Integer source;

        /**
         * 群终端id （新悠聊去掉改字段）
         */
        private String bizGroupId;
        /**
         * 群名称 （新悠聊去掉改字段）
         */
        private String groupName;

        public Long getMerId() {
            return merId;
        }

        public void setMerId(Long merId) {
            this.merId = merId;
        }

        public MsgContentDto getMsgContent() {
            return msgContent;
        }

        public void setMsgContent(MsgContentDto msgContent) {
            this.msgContent = msgContent;
        }

        public int getSendTime() {
            return sendTime;
        }

        public void setSendTime(int sendTime) {
            this.sendTime = sendTime;
        }

        public Long getCsId() {
            return csId;
        }

        public void setCsId(Long csId) {
            this.csId = csId;
        }

        public String getCsAccount() {
            return csAccount;
        }

        public void setCsAccount(String csAccount) {
            this.csAccount = csAccount;
        }

        public String getCsName() {
            return csName;
        }

        public void setCsName(String csName) {
            this.csName = csName;
        }

        public Long getUserId() {
            return userId;
        }

        public void setUserId(Long userId) {
            this.userId = userId;
        }

        public String getBizUserId() {
            return bizUserId;
        }

        public void setBizUserId(String bizUserId) {
            this.bizUserId = bizUserId;
        }

        public String getUserName() {
            return userName;
        }

        public void setUserName(String userName) {
            this.userName = userName;
        }

        public Integer getDeviceType() {
            return deviceType;
        }

        public void setDeviceType(Integer deviceType) {
            this.deviceType = deviceType;
        }

        public String getDeviceId() {
            return deviceId;
        }

        public void setDeviceId(String deviceId) {
            this.deviceId = deviceId;
        }

        public Long getDeviceUniqueId() {
            return deviceUniqueId;
        }

        public void setDeviceUniqueId(Long deviceUniqueId) {
            this.deviceUniqueId = deviceUniqueId;
        }

        public String getDeviceName() {
            return deviceName;
        }

        public void setDeviceName(String deviceName) {
            this.deviceName = deviceName;
        }

        public Integer getSource() {
            return source;
        }

        public void setSource(Integer source) {
            this.source = source;
        }

        public String getBizGroupId() {
            return bizGroupId;
        }

        public void setBizGroupId(String bizGroupId) {
            this.bizGroupId = bizGroupId;
        }

        public String getGroupName() {
            return groupName;
        }

        public void setGroupName(String groupName) {
            this.groupName = groupName;
        }

        public String getExt() {
            return ext;
        }

        public void setExt(String ext) {
            this.ext = ext;
        }

        public long getSendTimeV2() {
            return sendTimeV2;
        }

        public void setSendTimeV2(long sendTimeV2) {
            this.sendTimeV2 = sendTimeV2;
        }

        public String getUserAvatar() {
            return userAvatar;
        }

        public void setUserAvatar(String userAvatar) {
            this.userAvatar = userAvatar;
        }
    }

    public static class MsgContentDto implements Serializable {
        private static final long serialVersionUID = 7989652137103529830L;
        /**
         * 消息内容类型 0文本；1图片；2语音消息；3视频消息；4卡片消息(URL,APP,小程序分享);
         * 5小程序; 6 GIF图片 ; 7 文件 ; 8 名片 ;9 指令
         */
        private Integer contentType;

        /**
         * 消息内容 (0文本；1图片；2语音消息；3视频消息；6GIF图片；7文件；9指令) 用该字段
         */
        private String content;

        /**
         * 请求添加好友的来源(17卡片添加；14群内添加；30扫描二维码添加；3搜索微信号添加；1QQ号)
         */
        private Integer scene;

        // ========================卡片==========================
        /**
         * 卡片标题
         */
        private String cardTitle;
        /**
         * 卡片描述
         */
        private String cardDesc;
        /**
         * 卡片图片
         */
        private String cardImg;
        /**
         * 卡片连接
         */
        private String cardUrl;
        /**
         * 卡片名称-应用名称
         */
        private String displayName;

        // ========================小程序==========================
        /**
         * 小程序标题
         */
        private String miniProTitle;
        /**
         * 小程序描述
         */
        private String miniProDesc;
        /**
         * 小程序名称
         */
        private String miniProName;
        /**
         * 小程序地址
         */
        private String miniProUrl;
        /**
         * 小程序图片
         */
        private String miniProImg;
        /**
         * 小程序appid
         */
        private String miniProAppId;
        /**
         * 小程序原始id
         */
        private String miniProGhId;

        // ========================名片==========================
        /**
         * 名片微信id
         */
        private String vcardWxid;
        /**
         * 名片名称
         */
        private String vcardName;
        /**
         * 名片图片
         */
        private String vcardImg;

        public Integer getContentType() {
            return contentType;
        }

        public void setContentType(Integer contentType) {
            this.contentType = contentType;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }

        public Integer getScene() {
            return scene;
        }

        public void setScene(Integer scene) {
            this.scene = scene;
        }

        public String getCardTitle() {
            return cardTitle;
        }

        public void setCardTitle(String cardTitle) {
            this.cardTitle = cardTitle;
        }

        public String getCardDesc() {
            return cardDesc;
        }

        public void setCardDesc(String cardDesc) {
            this.cardDesc = cardDesc;
        }

        public String getCardImg() {
            return cardImg;
        }

        public void setCardImg(String cardImg) {
            this.cardImg = cardImg;
        }

        public String getCardUrl() {
            return cardUrl;
        }

        public void setCardUrl(String cardUrl) {
            this.cardUrl = cardUrl;
        }
        public String getDisplayName() {
            return displayName;
        }

        public void setDisplayName(String displayName) {
            this.displayName = displayName;
        }

        public String getMiniProTitle() {
            return miniProTitle;
        }

        public void setMiniProTitle(String miniProTitle) {
            this.miniProTitle = miniProTitle;
        }

        public String getMiniProDesc() {
            return miniProDesc;
        }

        public void setMiniProDesc(String miniProDesc) {
            this.miniProDesc = miniProDesc;
        }

        public String getMiniProName() {
            return miniProName;
        }

        public void setMiniProName(String miniProName) {
            this.miniProName = miniProName;
        }

        public String getMiniProUrl() {
            return miniProUrl;
        }

        public void setMiniProUrl(String miniProUrl) {
            this.miniProUrl = miniProUrl;
        }

        public String getMiniProImg() {
            return miniProImg;
        }

        public void setMiniProImg(String miniProImg) {
            this.miniProImg = miniProImg;
        }

        public String getMiniProAppId() {
            return miniProAppId;
        }

        public void setMiniProAppId(String miniProAppId) {
            this.miniProAppId = miniProAppId;
        }

        public String getMiniProGhId() {
            return miniProGhId;
        }

        public void setMiniProGhId(String miniProGhId) {
            this.miniProGhId = miniProGhId;
        }

        public String getVcardWxid() {
            return vcardWxid;
        }

        public void setVcardWxid(String vcardWxid) {
            this.vcardWxid = vcardWxid;
        }

        public String getVcardName() {
            return vcardName;
        }

        public void setVcardName(String vcardName) {
            this.vcardName = vcardName;
        }

        public String getVcardImg() {
            return vcardImg;
        }

        public void setVcardImg(String vcardImg) {
            this.vcardImg = vcardImg;
        }
    }

    public String getReqId() {
        return reqId;
    }

    public void setReqId(String reqId) {
        this.reqId = reqId;
    }

    public MsgDto getMsg() {
        return msg;
    }

    public void setMsg(MsgDto msg) {
        this.msg = msg;
    }

    public int getMsgSourceType() {
        return msgSourceType;
    }

    public void setMsgSourceType(int msgSourceType) {
        this.msgSourceType = msgSourceType;
    }

    public String getBizType() {
        return bizType;
    }

    public void setBizType(String bizType) {
        this.bizType = bizType;
    }

    public int getRetry() {
        return retry;
    }

    public void setRetry(int retry) {
        this.retry = retry;
    }

    public Long getMsgId() {
        return msgId;
    }

    public void setMsgId(Long msgId) {
        this.msgId = msgId;
    }

    public int getIgnoreBizType() {
        return ignoreBizType;
    }

    public void setIgnoreBizType(int ignoreBizType) {
        this.ignoreBizType = ignoreBizType;
    }
}
